故事的開頭,是因為我有天想要分析高鐵訂票App的https封包,於是我就先準備好Android上面可以攔截https封包的工具Packet Capture,照之前的使用經驗,我只需要移動到目標App開始操作送出請求,就會看到這個畫面內出現我想要找的封包紀錄。
但這也是我第一次開始攔截封包後失敗
於是我開始思索這段流程裡面可能是哪個環節導致這個問題發生,最有可能的元素可能就是因為Packet Capture是開啟VPN的服務將我手機上的所有網路流量透過它轉發,並附帶一個Packet Capture要求我安裝的憑證,這樣才能解讀我的https封包。
但是為什麼我之前用在其他的App上卻沒有這個問題?開始將我所有的疑問上Google查詢後稍微整理出一個大概的方向,猜測是我要記錄的App做了憑證綁定 (certificate pinning) ,所以在我轉發的時候出現了問題。
在這樣的前提下,第一步就是要想辦法讓訂票App採信我的憑證,但對於一個已經封裝好的APK我能想到的辦法,就是反編譯它,將我自己的憑證放進去App內,或者是讓App內忽略驗定憑證綁定時的錯誤。